package com.yc.springmvc.controller;

import com.yc.springmvc.bean.Person;
import com.yc.springmvc.bean.Result;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
public class UserDo {

    @RequestMapping("reg")
    public Result reg(@RequestBody @Valid Person p,  //@Valid  告诉程序这里需要验证
                      Errors errors){   // 验证结果
        if(errors.hasErrors()){  //如果表单校验有错误，则 errors.hasErrors() 会返回 false，
            return new Result(0, "字段验证错误", errors.getAllErrors());
        }
        // TODO 业务 和 DAO 自行实现
        return new Result(1, "注册成功!", p);
    }



    @PostMapping("uploadfile")
    public Result upload( @RequestParam("file") MultipartFile file)
            throws IOException {
        String filename = file.getOriginalFilename();  //获取客户端文件系统中的原始文件名
        String newFilename = UUID.randomUUID().toString()+"."
                // 後綴
                +filename.substring(filename.lastIndexOf(".")+1);   //  文件名.后缀
        File fileObj = new File("D:\\学习资料\\s3\\spring-mvc04\\上传文件",newFilename);  //上传文件保存地址
        //把接收到的文件写入到目的文件中,如果目的文件已经存在了则会先进行删除。用于将MultipartFile转换为File类型文件
        file.transferTo(fileObj);
        // F:\上课视频\135\0402\a.jpg => 映射為 /upload/a.jpg
        return new Result(1,"文件上傳成功!", "upload/" + newFilename);
    }


}